#include "PlayerInfo.h"
#include "Exception.h"
#include "Logger.h"

using namespace game_engine::data_format;
using namespace game_engine::utils;

///////////////////////////////////////////////////////////////////////////////
// Constructors and Destructors
///////////////////////////////////////////////////////////////////////////////

PlayerInfo::PlayerInfo(void)
    : textureFilename(), initialPosition(), initialSpeed(0.0f)
{
}

PlayerInfo::~PlayerInfo(void)
{
}

///////////////////////////////////////////////////////////////////////////////
// Other public methods
///////////////////////////////////////////////////////////////////////////////

void PlayerInfo::parse(XmlDocument &doc)
{
    // Get player's information
    try 
    {
        textureFilename = XmlUtils::getString(
            "level_parameters.player.player_texture_file", doc);
        string pos = XmlUtils::getString(
            "level_parameters.player.initial_position", doc);
        initialPosition = Point(pos);
        initialSpeed = XmlUtils::getFLOAT32(
            "level_parameters.player.initial_speed", doc);
    } catch (exception &e)
    {
        string msg = "Parsing tile world information failed. ";
        msg.append(e.what());
        Logger::ERR(GAMEENGINE_LOG, msg);
        throw ParserException(msg);
    }
}

///////////////////////////////////////////////////////////////////////////////
// Getters
///////////////////////////////////////////////////////////////////////////////

const string& PlayerInfo::getTextureFilename(void) const
{
    return textureFilename;
}

const Point& PlayerInfo::getInitialPosition(void) const
{
    return initialPosition;
}

const FLOAT32 PlayerInfo::getInitialSpeed(void) const
{
    return initialSpeed;
}

